Businesses have invested money, time, and resources in computers and computer systems which store and access large quantities of data relating to specific matters, such as financial accounts, inventory, customers, employees, etc. Businesses are sensitive to the loss of their investment when new computer technology arises which may result in their investments becoming obsolete. An important consideration, therefore, in introducing new computer technology is its adaptation with existing computer technology.
Many organizations are forced to employ the expensive approach of re-writing the software from scratch. This is because there are no techniques that are ably supported by tools to re-architect the legacy software to the chosen open environment and architecture, while making effective use of the features of the new environment.
Modern architecture like Service oriented architecture (SOA), web services are gaining popularity. These architectures provide better re-usability and access within and across the organization. Monolithic Legacy architecture however provides a closed environment and cannot operate with SOA based applications.
Though wrappers can be provided to make old logic into services, the real benefits can be observed where Legacy architecture is migrated to modem SOA architecture.
Object-oriented” programming (OOP) is gaining popularity as it provides benefits over procedural programming. OOP languages, such as Smalltalk, C++, and Java, allow programmers to approach their programming tasks in a way that is believed to be more natural and intuitive than the rigidity of the procedural programming languages. The main problem, however, is that an OO architecture does not inherently interface smoothly with architecture of Legacy systems in which businesses may have a substantial investment.
Therefore there is a dire need to develop a system which provides easier conversion path to utilize new architecture and that has a flexible and a smooth interface. The present invention aims at developing such system.
The goal of OOP is to reduce the time and costs associated with developing complex software by creating small, reusable sections of program code that can be quickly and easily combined and reused to create new programs. The code sections are known as objects. The software object may model the attributes or characteristics of the real-world object and, in many cases, may also model its behavior.
Despite the recent development of modern architecture like SOA and dedicated OOP languages, businesses can't take the benefits of these state of the art practices since they have already invested billions of dollars over the years in their existing systems and procedural code. It would be an extraordinarily uneconomical task to manually transfer all legacy procedural codes into OOP codes following modern architecture. It is a known-to-be-difficult problem. Obsolete documentation, core programmers are no longer available and the structure of the system is not known, are some of the main reasons. The known techniques of syntactic (one-to-one) conversion (as claimed in U.S. Pat. No. 6,467,079 and U.S. Pat. No. 6,453,464) are not suitable since they do not result in architectural modifications to take the real benefits.
It is the object of the invention to provide a method and system that can re-architect the legacy code in an automated fashion. This automated re-architecting is achieved by recognizing instances of architectural and design patterns, identifying instances and using these instances for generating/transforming to object oriented code.
It is the object of the invention to establish and define architectural and design patterns, taking into account the variants of programming languages and styles.
It is yet another object of the invention to establish criteria to generate or convert the existing legacy code into OO code based on multiple patterns.
It is yet another object of the invention to link the converted instances of the patterns to build a functionally equivalent re-architected application.
It is yet another object of the invention to migrate legacy programs irrespective of the platforms.